// 正确引用路径（从pages/index出发）
const { getWuxingImages } = require('../../utils/imageConfig');
Page({
  data: {
    date: '',
    time: '08:00',
    wechatId:'sisterejj',
    isAccurate: true,
    displayImages:[],
    luckyColors: [],  
    hasResult:false,
    qrcodeUrl: '/images/ejj-qrcode.png',
    qrcodeError: false,
      // 天干描述映射表
      ganDescriptions: {
        "甲": "甲木参天，直立千古。",
        "乙": "乙木虽柔，可春可秋。",
        "丙": "丙火猛烈，欺霜侮雪。",
        "丁": "丁火柔中，内性昭融。",
        "戊": "戊土固重，既中且正。",
        "己": "己土卑湿，中正蓄藏。",
        "庚": "庚金带煞，刚健为最。",
        "辛": "辛金软弱，温润而清。",
        "壬": "壬水通河，周流不滞。",
        "癸": "癸水至弱，达于天津。"
      }
  },

  onLoad() {
    //设置转发
    wx.showShareMenu({ withShareTicket: true }); // 启用转发按钮
    },
    onShareAppMessage() {
      return {
        title: '好运小e',
        path: '/pages/index/index'
      };
    // 设置当天日期
    const today = this.getTodayDate();
    this.setData({
      date: today,
      time: '08:00',
      isAccurate:true
    });
    const testImages = getWuxingImages('木');
  console.log('测试获取木属性图片:', testImages);
  // 应输出: ["mu-01-绿幽灵.png", "mu-02-绿松石.png", ...]
  },

  // 处理API返回数据
  processImageData(res) {
    const wuxings = ((res.data || {}).date_rels || {}).bir_lucky_wuxings || [];

    // const wuxings=res.data?.date_rels?.bir_lucky_wuxings || [];

    let allImages = [];
  
    // 获取所有相关五行图片
    wuxings.forEach(wuxing => {
      const images = getWuxingImages(wuxing).map(
        file => `/images/jewel/${wuxing}/${file}`
      );
      allImages = allImages.concat(images);
    });

    // 随机选择3张不重复的图片
    const shuffled = [...new Set(allImages)]; // 去重
    const selected = this.getRandomItems(shuffled, 3);
    
    console.log('selected images:',selected);

    this.setData({ displayImages: selected });
  },

  // 改进的随机选择算法
  getRandomItems(arr, count) {
    const shuffled = [...arr];
    for (let i = shuffled.length - 1; i > 0; i--) {
      const j = Math.floor(Math.random() * (i + 1));
      [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
    }
    return shuffled.slice(0, Math.min(count, shuffled.length));
  },

  previewQrcode: function() {
    wx.previewImage({
      urls: [this.data.qrcodeUrl],
      current: this.data.qrcodeUrl
    });
  },
  
  handleQrcodeError: function() {
    this.setData({ qrcodeError: true });
    console.error('二维码加载失败');
  },

 

  bindDateChange: function(e) {
    this.setData({
      date: e.detail.value,
      hasResult: false,  // 清除结果标志
      luckyColors: [],   // 清空颜色数据
      mingliTerm: ''     // 清空命理术语
    });
  },


  // 重置到1990年
  resetTo1990: function() {
    this.setData({
      date: '1990-09-01'
    });
  },
  
  bindTimeChange: function(e) {
    this.setData({
      time: e.detail.value,
      hasResult: false,  // 清除结果标志
      luckyColors: [],   // 清空颜色数据
      mingliTerm: ''     // 清空命理术语
    });
  },
  // 获取当天日期（格式：YYYY-MM-DD）
  getTodayDate() {
    const now = new Date();
    const year = now.getFullYear();
    const month = String(now.getMonth() + 1).padStart(2, '0');
    const day = String(now.getDate()).padStart(2, '0');
    return `${year}-${month}-${day}`;
  },


  // 日期选择变化
  bindDateChange: function(e) {
    this.clearResults();
    this.setData({ date: e.detail.value });
  },

  // 时间选择变化
  bindTimeChange: function(e) {
    this.clearResults();
    this.setData({ time: e.detail.value });
  },
 // 新增方法：清除结果
 clearResults: function() {
  this.setData({
    hasResult: false,
    luckyColors: [],
    displayImages: [], 
    mingliTerm: '',
    ganDescription: ''
  });
},
  // 复选框变化
  checkboxChange: function(e) {
    this.setData({
      isAccurate: e.detail.value.includes('accurate')
    });
  },

  // 复制微信号
  copyWeChatId: function() {
    wx.setClipboardData({
      data: this.data.wechatId,
      success: () => {
        wx.showToast({ title: '微信号已复制' });
      }
    });
  },

  // 保存二维码
  saveQRCode: function() {
    wx.saveImageToPhotosAlbum({
      filePath: this.data.qrcode,
      success: () => {
        wx.showToast({ title: '二维码已保存' });
      },
      fail: (err) => {
        console.error('保存失败:', err);
      }
    });
  },

  // 直接添加联系人
  addContact: function() {
    wx.navigateTo({
      url: `weixin://dl/add?username=${this.data.wechatId}`
    });
  },

  // 提交数据
  submitData: function() {
    const { date, time, isAccurate } = this.data;
    
    // 验证是否已选择日期和时间
    if (date === '请选择日期' || time === '请选择时间') {
      wx.showToast({
        title: '请选择日期和时间',
        icon: 'none'
      });
      return;
    }
    
    // 组合日期时间格式为API需要的格式(YYYYMMDD)
    const formattedDate = date.replace(/-/g, '');
    const fomattedTime = time.replace(/:/g,'');
    
    // 准备发送的数据
    const postData = {
      date: formattedDate+fomattedTime,      
      is_time_accurate: isAccurate
    };
    
    // 显示加载中
    wx.showLoading({
      title: '查询中...',
    });
    
    // 直接发送请求
    // wx.request({
    //   url: 'https://ejj.vip.cpolar.cn/get_lucky_color',
    //   // url: 'https://192.168.1.54:5025/get_lucky_color',
    //   method: 'POST',
    //   data: postData,
    //   success: (res) => {
    //     console.log(res.data);
    //     wx.hideLoading();

    //     const colors = (
    //       (res.data || {}).data || {}
    //     ).date_rels.bir_lucky_colors || [];

    //     const bazi = (
    //       ((res.data || {}).data || {}).date_rels || {}
    //     ).bir_bazi || [];
        
    //     const shishen = (
    //       (((res.data || {}).data || {}).date_rels || {}).bir_shishen_info || {}
    //     ).shengri_rigan_shishen || {};
        
    //     // 组合命理术语（安全访问）
    //     const gan = bazi[4] || '未知';       // 第5个字（索引4）
    //     const zhi = Object.keys(shishen)|| '未知';
    //     const mingliTerm = `${gan}${zhi}`;
    //     const ganDescription=this.data.ganDescriptions[gan].replace(/，/g,' ').replace(/。/g,'') || '暂无描述';

    //     if (colors.length > 0) {
    //       this.setData({ 
    //         luckyColors: colors,
    //         lastUpdate: new Date().toLocaleString(),
    //         mingliTerm: mingliTerm,
    //         ganDescription: ganDescription,
    //         hasResult:true
    //       });
    //       this.processImageData(res);
    //       console.log(this.data.displayImages); 
    //     } else {
    //       wx.showToast({
    //         title: '未获取到有效颜色数据',
    //         icon: 'none'
    //       });
    //     }
    //   },
    //   fail: (err) => {
    //     wx.hideLoading();
    //     wx.showToast({
    //       title: '请求失败',
    //       icon: 'none'
    //     });
    //     console.error(err);
    //   }
    // });

    // 通过云函数调用
    wx.cloud.callFunction({
      name: 'apiProxy', // 对应云函数名称
      data: {
        date: date.replace(/-/g, '') + time.replace(/:/g, ''),
        is_time_accurate: isAccurate
      },
      success: (res) => {
        wx.hideLoading();
        console.log('云函数返回:', res.result);
        
        if (res.result.code === 200) {
          const responseData = res.result.data.data;
          
          // 处理颜色数据
          // 处理命理术语
          // const colors = responseData?.date_rels?.bir_lucky_colors || [];
          // const bazi = responseData?.date_rels?.bir_bazi || [];
          // const shishen = responseData?.date_rels?.bir_shishen_info?.shengri_rigan_shishen || {};

          const colors = ((responseData || {}).date_rels || {}).bir_lucky_colors || [];
          const bazi = ((responseData || {}).date_rels || {}).bir_bazi || [];
          const shishen = (((responseData || {}).date_rels || {}).bir_shishen_info || {}).shengri_rigan_shishen || {};

          const gan = bazi[4] || '未知';
          const zhi = Object.keys(shishen)[0] || '未知';
          
          this.setData({
            luckyColors: colors,
            mingliTerm: `${gan}${zhi}`,
            // ganDescription: this.data.ganDescriptions[gan]?.replace(/，/g,' ').replace(/。/g,'') || '暂无描述',
            ganDescription: (
              this.data.ganDescriptions[gan] 
                ? this.data.ganDescriptions[gan].replace(/，/g,' ').replace(/。/g,'') 
                : '暂无描述'
            ),
            hasResult: true
          });
          
          // 处理图片数据
          this.processImageData({ data: responseData });
        } else {
          wx.showToast({
            title: res.result.message || '请求失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        wx.hideLoading();
        console.error('云函数调用失败:', err);
        wx.showToast({
          title: '网络请求失败',
          icon: 'none'
        });
        }
      });  

  }
});